//
//  Convert.cpp
//  markerARLib
//
//  Created by CADCG on 16/4/20.
//  Copyright © 2016年 CvidKal. All rights reserved.
//

#include "Convert.hpp"


namespace Converter
{
    
    //
    //  Matrix3D toMatrix3D(const cv::Matx33d&a)
    //  {
    //    Matrix3D ret;
    //    a.f
    //  }
    Vector3D toVector3D(const cv::Matx31d&);

    void Eigen2CV(const Eigen::Vector2d &a,cv::Point2f&b)
    {
        b.x = a.x();
        b.y = a.y();
    }
    
    void Eigen2CV(const Eigen::Vector3d &a,cv::Point3f&b)
    {
        b.x = a.x();
        b.y = a.y();
        b.z = a.z();
    }

    cv::Matx33d Eigen2CV(const Eigen::Matrix3d &a)
    {
        cv::Matx33d b;
        for (int i=0; i<3; ++i)
        {
            for (int j=0; j<3; ++j) {
                b(i,j) = a(i,j);
            }
        }
        return b;
    }
    Eigen::Vector3d CV2Eigen(const cv::Matx31d&a)
    {
        Eigen::Vector3d b;
        b(0) = a(0);
        b(1) = a(1);
        b(2) = a(2);


        return b;
    }
    Eigen::Matrix3d CV2Eigen(const cv::Matx33d&a)
    {
        Eigen::Matrix3d b;
        for (int i=0; i<3; ++i)
        {
            for (int j=0; j<3; ++j) {
                b(i,j) = a(i,j);
            }
        }
        return b;
    }
    
    
    cv::Point3f Eigen2CV(const Eigen::Vector3d &a)
    {
        return cv::Point3f(a.x(),a.y(),a.z());

    }
    
}